As is known in the art, cloud computing systems contain large numbers of servers, storage systems, networking devices, software modules and components. Various performance metrics are provided by these components for monitoring, metering, or capacity planning purpose. These performance metrics usually contain raw data, e.g., the cumulative count of IOs (input/outputs) or TotalIOs, of a front end adapter in a storage system, which are not always desirable for the above mentioned purpose.
Derived metrics based on the current or historical values of one or more metrics often provide additional insight over the original raw metrics. Also, performance metrics from each individual component are disjointed since they do not reflect the performance of logical components across multiple physical components. For example, a service created in a cloud computing system composes compute, storage and network resources from physical components. The service does not have performance data on itself. In order to measure performance, metrics need to be defined based on the hardware components it uses. Furthermore, aggregation of performance metrics based on physical or logical relationships among the components can provide high level performance data, while reduce the amount of data need to be stored.
With huge amounts of performance data on a wide range of metrics periodically sampled from various hardware components in a cloud computing environment, it is desirable to associate the performance metrics with other related physical resources, and map them to relevant logical components to provide insight of resource usage, e.g., how many hardware resources are utilized by a service, rather than how many hardware resources are allocated to it.